package com.ym.medical.dao;

import com.ym.medical.domain.entity.UserEntity;
import com.ym.medical.domain.param.PatientDetailParam;
import com.ym.medical.domain.param.UserParam;
import com.ym.medical.domain.vo.DoctorVo;
import com.ym.medical.domain.vo.PatientVo;
import com.ym.medical.domain.vo.UserDoctViewVo;
import com.ym.medical.domain.vo.UserWxAllInfoVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * 终端用户Dao接口
 *
 * @author ym
 * @date 2020-08-17
 */
@Repository
public interface UserDao extends Mapper<UserEntity> {

	/**
	 * 患者賬號
	 *
	 * @param userModel
	 * @return
	 */
	List<PatientVo> getPatientList(
			@Param("userModel") UserParam userModel,
			@Param("blankUserSate") String blankUserSate);

	/**
	 * 电话号查询用户
	 *
	 * @param phoneNo
	 * @return
	 */
	UserEntity selectByPhone(String phoneNo);

	/**
	 * 姓名和电话查询用户
	 *
	 * @param realName
	 * @param phoneNo
	 * @return
	 */
	UserEntity selectByNameAndPh(
			@Param("realName") String realName, @Param("phoneNo") String phoneNo);

	/**
	 * 患者账号禁用
	 *
	 * @param userIds
	 * @return
	 */
	int disableUser(@Param("userIds") Long[] userIds);

	/***
	 * 启用
	 * @param userIds
	 * @return
	 */
	int enableUser(@Param("userIds") Long[] userIds);

	/**
	 * 医生账号
	 *
	 * @param userModel
	 * @return
	 */
	List<DoctorVo> getDoctorList(UserParam userModel);

	/***
	 * 患者信息列表
	 * @param patientDetailModel
	 * @return
	 */
	List<PatientVo> getPatients(PatientDetailParam patientDetailModel);

	/***
	 * 患者关注的医生
	 * @param currUserId
	 * @return
	 */

	List<DoctorVo> selectMyDoctor(
			@Param("currUserId") Long currUserId,
			@Param("fans") String fans,
			@Param("inquiry") String inquiry);

	/***
	 * 我的粉丝
	 * @param groupId
	 * @param userId
	 * @param keyword
	 * @return
	 */
	List<UserEntity> getGroupFan(
			@Param("groupId") Long groupId,
			@Param("userId") Long userId,
			@Param("keyword") String keyword);

	/**
	 * 获取微信用户详情信息
	 *
	 * @param id
	 * @return
	 */
	UserWxAllInfoVO getWxAllInfo(Long id);


	/**
	 * 医生用户视图表
	 * @param currId
	 * @return
	 */
	UserDoctViewVo selectUserDoctView(Long currId);
}
